/*
 * PPMC_Arbol.cpp
 *
 *  Created on: 07/06/2010
 *      Author: administrador
 */

#include "PPMC_Arbol.h"

PPMC_Arbol::PPMC_Arbol(char* archivo_de_trabajo)
{
	remove(archivo_de_trabajo);

	Arbol::setTamanioMaximoNodo(65536);

	Arbol::setNombreArchivo(archivo_de_trabajo);

	this->estructuraContextos = Arbol::getInstancia();
}

PPMC_Arbol::~PPMC_Arbol()
{

	Arbol::borrarInstancia();

/*	remove("comprimidoArbol.ppmc");  */

}

void PPMC_Arbol::agregarContexto(Contexto *contextoAgregar)
{
	Elemento* elementoAgregar = contextoAgregar->serializar();

	this->estructuraContextos->insertarElemento(elementoAgregar);

	delete elementoAgregar;

}

Contexto* PPMC_Arbol::buscarContexto(string claveContexto)
{
	// TODO
	Clave claveElemento(claveContexto);

	Elemento* elementoAgregar = this->estructuraContextos->buscarElemento(claveElemento);

	Contexto *contextoBuscado =NULL;

	if (elementoAgregar!=NULL){
		contextoBuscado = new Contexto();

		contextoBuscado->hidratar(elementoAgregar);

	}

	delete elementoAgregar;

	return contextoBuscado;
}

void PPMC_Arbol::actualizarContexto(Contexto *contextoActualizar){

	Elemento* elementoModificar = contextoActualizar->serializar();

	this->estructuraContextos->modificarElemento(elementoModificar->getClave(),elementoModificar->getValor());

	delete elementoModificar;

}